#include<iostream>
using namespace std;
const int manx=100+5;
int SumMax(int a[],int n)//一维数组下的最大子段和函数
{
	int sum=0;
	int b=0;
	for(int i=1;i<=n;i++)
	{
		if(b>0)	{  b += a[i];  }
		else	{  b =  a[i];  }
		if(b>sum){ sum=b;      }
	}
	return sum;
}
int SunMax2(int m,int n,int a[][manx])
{
	int sum=0;
	int b[manx];
	for(int i=1;i<=m;i++)
	{
		for(int k=1;k<=n;k++)
		{
			b[k]=0;
		}
		for(int j=i;j<=m;j++)//按行逐步进行分解
		{
			for(int k=1;k<=n;k++)
			{
				b[k]+=a[j][k];//将二维的数组简化为一维的数组
			}
			int max=SumMax(b,n);
			if(max>sum)
			{
				sum=max;
			}
		}
	}
	return sum;
}
int main()
{
	int a[manx][manx];
	int m,n;
	cin>>m>>n;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
		}
	}
	cout<<SunMax2(m,n,a)<<endl;
	return 0;
}
